iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 18
0
自我挑戰組

打造專案管理 iOS App 系列 第 18

安能取熊掌而捨魚 SnapKit 進階用法(更新約束)

  • 分享至 

  • xImage
  •  

安能取熊掌而捨魚 SnapKit 進階用法(更新約束)

前陣子已經有寫一篇SnapKit的基礎用法,相信大家對SnapKit有基礎的瞭解了。

傳送門:
https://ithelp.ithome.com.tw/articles/10243094

SnapKit 更方便的佈局

edge 邊緣

//讓當前視圖 的 上下左右(top,left,bottom,right) 等於 view2
make.edges.equalTo(view2)

size 尺寸

//當前視圖寬高 >= titleLabel
make.size.greaterThanOrEqualTo(titleLabel)

center 中心

//當前視圖與 button1中心相同 (centerX 和 centerY) 
make.center.equalTo(button1)

視圖內延伸

boxInner.snp.makeConstraints { (make) -> Void in
            make.edges.equalTo(boxOutter).inset(UIEdgeInsetsMake(10, 15, 20, 25))
        }

更新约束 snp.updateConstraints

  1. 更新某個約束或某幾個約束的常量值,你就可以使用updateConstraints而不是makeConstraints。

  2. 這個方法可以調用多次,會相應setNeedsUpdateConstraints, 在控制器中,可以寫在override func updateViewConstraints()方法裡面(當然也可以寫在你想要什麼時候更新的點擊事件裡面)

出處:https://www.jianshu.com/p/2bad53a2a180

實作更新約束:

建立約束

觸發條件後更新約束

結果卻出乎意料的。

無情報錯


從錯誤的地方反推回去,updateLayoutConstraint是為nil,那麼為什麼為nil了再往上走。

發現問題了multiplier不一樣導致了返回false。


後來我把約束條件全部設成常數,就能正常運作了,目前問題還沒完全釐清。


上一篇
夢的伊甸園還在那邊 步入中期,愈發精彩
下一篇
安能取熊掌而捨魚? UIActivityIndicatorView
系列文
打造專案管理 iOS App 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言